<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class AdminModule extends Model
{
    protected $fillable = ['name', 'module', 'permission', 'config', 'domain', 'admin_menu', 'center_menu','center_menu_setting', 'space_menu' , 'space_menu_setting'];
    //指定类型转换
    protected $casts = [
        'permission' => 'array',
        'config' => 'array',
        'admin_menu' => 'array',
        'space_menu' => 'array',
        'center_menu' => 'array',
    ];

    //根据访问的网址找到要访问的模块儿页面
    protected function getActionAttribute()
    {
//        用户访问首页一般都是通过在地址栏输入网址获取从别的网站跳转过来的,并不是通过站内路由跳转过来的,这里没有站内request请求,所以只能从$_SERVER超全局变量中组合用户在浏览器中输入的要访问的地址
//        dd($_SERVER);
//        首先从$_SERVER这个超全局变量数组中组合出当前要访问的url地址
        $url = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
//        从当前模块儿对应表中查找domain与当前域名相同的模块儿名
        $module = self::where('domain', $url)->value('module');
        //判断$module是否取到值.如果取到值了就执行判断体中的内容
        if ($module) {
//        获取模块儿目录后就可以组合相应模块儿控制器类的"完全限定名称"
            $class = 'App\Http\Controllers\\' . $module . '\HomeController';
            //上面组合出一个类的完全限定名称后,可以通过class_exists()函数判断组合出的"完全限定名称"类是否存在
            //通过method_exists($class,'index') 这个方法可以判断"完全限定名称"类中是否有index方法
            if (class_exists($class) && method_exists($class, 'index')) {
                return $class . '@index';
            }
        } else {
            //当没有模块儿能匹配上的时候使用文章系统的首页
            return '\App\Http\Controllers\Content\HomeController@index';
        }
    }

    //获取模块儿下的所有权限
    public static function getPermission($module)
    {
        $permissions = include '../app/Http/Controllers/' . $module . '/config/permission.php';
        $data = [];
        foreach ($permissions as $permission) {
            $data[] = $module . '-' . $permission['name'];
        }
        return $data;
    }


}

